/*
 * AbstractGlobalScheduling.java
 *
 * Created on Streda, 2007, november 14, 7:39
 *
 */

package logic.schedulers;

import java.util.Collection;
import java.util.Vector;
import logic.gridSimInterface.resource.ResourceCharacteristicExt;
import logic.gridSimInterface.user.GridletInfo;

/**
 * Rozhranie pre algoritmy vyberu zdrojov pre dane ulohy v gride. 
 *
 * @author alvin
 */
public interface AbstractGlobalScheduling extends AlgorithmPlugin{
    /**
     * Z danej mnoziny zdrojov vyberie ten, ktoremu by sa mala pozadovana uloha
     * pridelit - vola sa pri dynamickom planovani
     * @param       task        Informacie o novej ulohe, ktoru treba zaradit
     * @param       resources   Zoznam dostupnych zdrojov nenulovej dlzky.
     * @return                  ID vybrateho zdroja; ak neexistuje vhodny zdroj -1
     */
    public int findResource(GridletInfo task, Collection<ResourceCharacteristicExt> resources);
    
    /**
     * Pre kazdu ulohy vlozi do vysledneho vektora ID zdroja, na ktorom by mala
     * byt vykonana. Musi byt zachovane poradie uloh a pridelenych zdrojov vo
     * vektoroch. Ak neexistuje vhodny zdroj pre niektoru ulohu, do vysledku
     * sa ulozi -1. Metoda sa vola pri statickom planovani
     * @param       tasks       Zoznam uloh
     * @param       resources   Zoznam dostupnych zdrojov nenulovej dlzky
     * @return                  Zoznam pridelenych zdrojov
     */
    public Vector<Integer> findResources(Vector<GridletInfo> tasks,
            Collection<ResourceCharacteristicExt> resources);
}
